from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, BadSignature
from django.conf import settings


# from mall import settings

def generic_access_token(openid):
    """进行加密操作，基于JWT的加密方式"""
    #  创建序列化器对象
    #  第一个参数是加密方式，一般使用setting自带的加密
    #  第二个参数是设置有效期
    serializer = Serializer(settings.SECRET_KEY, 3600)

    #  进行加密设置，返回的是一个二进制的加密数据
    token = serializer.dumps({'openid': openid})

    #  将加密后的openid返回，二进制需要转码
    return token.decode()


def check_open_id(token):
    """进行解密操作"""
    #  创建序列化器
    serializer = Serializer(settings.SECRET_KEY, 3600)

    #  进行解密设置,校验
    try:
        result = serializer.loads(token)
        #  result 就是当时加密的数据
    except BadSignature:
        return None
    return result.get('openid')
